// 拆分后的模块，基本保留了原先的核心属性（除了modules）

// 该模块由张三负责

// 请注意：在实际开发项目的时候，每个人可能负责不同的模块，鉴于在写代码的时候他们并不可能每次都坐在一起商量vuex中的变量、方法的命名，则可能会出现名称冲突的情况。对于冲突情况vuex会帮我们自动解决，它有自己的合并策略，but对于getters没有合并策略，遇到重名的getters就会报错。这个问题需要解决。

// 解决方案：采用模块命名空间(思想来自于后端)
// 只要给导出的成员加上namespaced属性，值设置为true即可
// 原理：在往index.js中合并vuex各个模块的时候，会先产生一个以模块名称为名的属性，然后才会把模块中的变量和方法放进去。

// 空间名是指在index.js的modules对象中的属性名

// Object.common.isShow
// Object.user.isShow

export default {
    namespaced: true,
    state: {
        isShow: true,
        _token: "",
        address: '',
    },
    mutations: {
        setIsShow(state, arg) {
            state.isShow = arg;
        },
        setAddress(state, arg) {
            state.address = arg;
        },
        // 设置token的值
        setToken(state, arg) {
            state._token = arg;
            // 存储到localStorage中
            localStorage.setItem("_token", arg);
        },
    },
    actions: {
        setIsShowAsync(context, arg) {
            setTimeout(() => {
                context.commit("setIsShow", arg);
            }, 500);
        },
    },
    getters: {
        getIsShow(state) {
            return state.isShow ? "显示" : "隐藏";
        },
    },
};